// 这个文件 最主要的功能就是创建 store 的

import { createStore , applyMiddleware , compose } from 'redux';
import thunk from 'redux-thunk';

import reducer from './reducer';
// 这是合并后的reducer

// 这个是redux-devtools 这个工具的启动器 

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;

// 这里的参数 是要放入个 reducer 也可以是多个
// reducer 就是纯函数  redux 规定的这是有利于性能优化的
// enhancer 加强的意思 也就是说 第二个参数 可以对我们的store进行加强 就是引入中间件
// applyMiddleware  把中间件 包裹一下就可以放到store里
// composeEnhancers就简单的理解 他需要把所有的数据来源 都要从它里面过滤一下 他好监听
const store = createStore(reducer,composeEnhancers(applyMiddleware(thunk)));

// action 就是简单的一个对象 要传递给 reducer的命令对象
// action  里的最后返回给reducer的对象里的数据 就是简单了两个属性 一个是方法名 和参数
// 但是 我们 可以通过中间件 来处理action 让他里面可以放入一些函数 来执行异步请求 把数据请求过来 
// 然后在这里把数据处理后 再次返回一个对象给 reduceer 里面还是简单了两个属性 一个是方法名 和参数


// 在这里 我们把store 给倒 出去了 下面就需要把store 给共享出去
export default store;